package es.webapp.exiquets.domain.entities;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import es.webapp.exiquets.domain.webforms.ProductoForm;


/**
 * The persistent class for the productos database table.
 * 
 */
@Entity
@Table(name="productos", catalog="exiquetsdb")
public class Producto implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int idProductos;

	private String descripcion;

	private String img;

	private String nombre;

	private float precio;

	private int stock;

	//bi-directional many-to-one association to Categoria
	@ManyToOne(cascade={CascadeType.ALL})
	@JoinColumn(name="categoria")
	private Categoria categoriaBean;

	//bi-directional many-to-many association to User
	@ManyToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	@JoinTable(
		name="users_has_productos"
		, joinColumns={
			@JoinColumn(name="Productos_idProductos")
			}
		, inverseJoinColumns={
			@JoinColumn(name="users_user_id")
			}
		)
	private Set<User> users;

	//bi-directional many-to-many association to Usuariosanonimo
	@ManyToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	@JoinTable(
		name="usuarioanonimos_has_productos"
		, joinColumns={
			@JoinColumn(name="productos_idProductos")
			}
		, inverseJoinColumns={
			@JoinColumn(name="usuariosAnonimos_idUsuarioAnonimo")
			}
		)
	private Set<Usuariosanonimo> usuariosanonimos;

	public Producto() {
	}
	
	public Producto(ProductoForm pf){
		this.idProductos = pf.getIdProductos();
		this.descripcion = pf.getDescripcion();
		this.img = pf.getImg();
		this.nombre = pf.getNombre();
		this.precio = pf.getPrecio();
		this.stock = pf.getStock();
		this.categoriaBean = pf.getCategoriaBean();
	} 

	public int getIdProductos() {
		return this.idProductos;
	}

	public void setIdProductos(int idProductos) {
		this.idProductos = idProductos;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getImg() {
		return this.img;
	}

	public void setImg(String img) {
		this.img = img;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public float getPrecio() {
		return this.precio;
	}

	public void setPrecio(float precio) {
		this.precio = precio;
	}

	public int getStock() {
		return this.stock;
	}

	public void setStock(int stock) {
		this.stock = stock;
	}

	public Categoria getCategoriaBean() {
		return this.categoriaBean;
	}

	public void setCategoriaBean(Categoria categoriaBean) {
		this.categoriaBean = categoriaBean;
	}

	public Set<User> getUsers() {
		return this.users;
	}

	public void setUsers(Set<User> users) {
		this.users = users;
	}

	public Set<Usuariosanonimo> getUsuariosanonimos() {
		return this.usuariosanonimos;
	}

	public void setUsuariosanonimos(Set<Usuariosanonimo> usuariosanonimos) {
		this.usuariosanonimos = usuariosanonimos;
	}

}